javascript oop、instanceof 和基类
全部标签 这是一个人为的例子:publicstaticclassMyExtensions{publicstaticvoidMyMethod(thisMyInterfaceobj,stringtxt){}}interfaceMyInterface{}publicMyDerived:MyInterface{voidDoStuff(){MyMethod("test");//fails;compilercan'tfindMyMethod?}}在我上面的示例中,我试图从我的派生类调用分配给接口(interface)的扩展方法。编译器在这里失败并说MyMethod在当前上下文中不存在。我的CS文件中有所有适
我有两个类,名为Post和Question。问题定义为:publicclassQuestion:Post{//...}我的Question类没有覆盖Post的任何成员,它只是表达了一些其他的。我想完成的事情我有一个Post类型的对象,其成员已填充。现在,我想将其转换为一个问题,以便我可以为其他几个成员添加值。这是我当前的代码,使用显式转换:PostpostToQuestion=newPost();//PopulatethePost...Questionques=(Question)postToQuestion;//-->thisistheerror!//Filltheotherpart
我有以下由多个其他类实现的Shape接口(interface),例如Rectangle、Circle、Triangle...interfaceIShape{boolIsColliding(IShapeother);}IsColliding方法应该检查一个Shape是否与另一个Shape发生碰撞,而不管它们的具体类型。然而,每一对形状(矩形/矩形、矩形/圆形、圆形/三角形等)都有自己的碰撞检查实现。我正在努力为这个问题找到一个好的设计解决方案。天真的方法是切换“其他”形状的类型以调用正确的实现:classRectangle:IShape{boolIsColliding(IShapeoth
我需要动态创建一个类。大多数事情都运行良好,但我一直在生成构造函数。AssemblyBuilder_assemblyBuilder=AppDomain.CurrentDomain.DefineDynamicAssembly(newAssemblyName("MyBuilder"),AssemblyBuilderAccess.Run);ModuleBuilder_moduleBuilder=_assemblyBuilder.DefineDynamicModule("MyModule");publicstaticobjectGetInstance(thisTSourcesource,str
这个问题在这里已经有了答案:HowtofindallthetypesinanAssemblythatInheritfromaSpecificTypeC#(4个答案)Getallderivedtypesofatype(8个答案)关闭9年前。classFoo{}classFoo1:Foo{}classFoo2:Foo{}我怎样才能获得所有使用Foo作为基类的类?继承的类在同一个程序集中不是必需的。
如果基类和派生类都有带参数的构造函数,那么我们在哪里将参数传递给基类构造函数? 最佳答案 像这样:publicclassDerivedClass:BaseClass{publicDerivedClass(intderivedParam,StringbaseParam):base(baseParam){}}此处的base关键字调用匹配提供的参数重载的基类构造函数。 关于c#-将参数传递给基类构造函数,我们在StackOverflow上找到一个类似的问题: htt
我有一个标记为抽象的基类。是否可以使该基类中的方法仅对继承该基类的其他类可见?假设我有Class1,它是我的基类,被标记为抽象类。Class2继承了Class1并且可以调用它的所有公共(public)方法。我希望Class3创建Class2的实例,但不能调用Class1的某些方法。我尝试将这些方法本身标记为抽象方法,但当Class2尝试使用它们时出现错误。错误是:“...无法声明正文,因为它被标记为抽象” 最佳答案 为什么不声明方法protected?publicabstractclassClass1{protectedabstra
我有以下结构:abstractclassBase{publicabstractListGet();//Whatshouldbethegenerictype?}classSubOne:Base{publicoverrideListGet(){}}classSubTwo:Base{publicoverrideListGet(){}}我想创建一个抽象方法,返回具体子类的任何类。因此,正如您从示例中看到的那样,SubOne中的方法应该返回List而SubTwo中的方法应该返回List.我在基类中声明的签名中指定什么类型?[更新]感谢您发布的答案。解决方案是使抽象类通用,如下所示:abstrac
这个问题在这里已经有了答案:Whycan'tIaccessC#protectedmembersexceptlikethis?(7个答案)关闭9年前。这似乎是个新手问题,但您能解释一下为什么Der.B()方法无法通过Base类变量访问protectedFoo吗?这对我来说很奇怪:publicclassBase{protectedintFoo;}publicclassDer:Base{privatevoidB(Baseb){Foo=b.Foo;}//Error:CannotaccessprotectedmemberprivatevoidD(Derd){Foo=d.Foo;}//OK}谢谢!
我有以下两个类(模型),一个是基类,另一个是子类:publicclassBaseClass{publicstringBaseProperty{get;set;}}publicclassChildClass:BaseClass{publicstringChildProperty{get;set;}}在应用程序中,我使用泛型动态调用ChildClassListpropertyNames=newList();foreach(PropertyInfoinfointypeof(T).GetProperties()){propertyNames.Add(info.Name);}在这里,在prope